package com.cskaoyan.bean.common;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

/**
 * @author stone
 * @date 2022/01/06 16:24
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BaseRespVo<T> {

    public static final int STATUS_OK = 200;
    public static final int STATUS_DELETE_FAILED = 401;
    public static final int STATUS_ALREADY_RECEIVE = 740;

    T data;
    String errmsg;
    int errno;


    public BaseRespVo() {

    }

    public BaseRespVo(String errmsg, int errno) {
        this.errmsg = errmsg;
        this.errno = errno;
    }

    public static <T> BaseRespVo ok(T data) {
        BaseRespVo baseRespVo = new BaseRespVo();
        baseRespVo.setErrno(0);
        baseRespVo.setData(data);
        baseRespVo.setErrmsg("成功");
        return baseRespVo;
    }


    public static <T> BaseRespVo<T> ok() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(0);
        baseRespVo.setErrmsg("成功");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> error(String message) {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(404);
        baseRespVo.setErrmsg(message);
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> invalidData(String msg) {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(504);
        baseRespVo.setErrmsg(msg);
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> invalidData() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(504);
        baseRespVo.setErrmsg("更新数据已失效");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> invalidParameter(String msg) {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(400);
        baseRespVo.setErrmsg(msg);
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> unAuthc() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(502);
        baseRespVo.setErrmsg("认证失败");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> error(int errno, String errmsg) {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(errno);
        baseRespVo.setErrmsg(errmsg);
        return baseRespVo;
    }


    public static <T> BaseRespVo no(String msg) {
        BaseRespVo baseRespVo = new BaseRespVo();
        baseRespVo.setErrmsg(msg);
        baseRespVo.setErrno(404);
        return baseRespVo;
    }

    /**
     * 李博
     * 用户输入信息错误
     *
     * @param <T>
     * @return
     */
    public static <T> BaseRespVo<T> invalidParameter() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(402);
        baseRespVo.setErrmsg("参数值不对");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> erroPassword() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(700);
        baseRespVo.setErrmsg("账号密码不对！");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> captchaTime() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(702);
        baseRespVo.setErrmsg("验证码未超时1分钟，不能发送");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> errorCaptcha() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(703);
        baseRespVo.setErrmsg("验证码错误");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> repetitionUserName() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(704);
        baseRespVo.setErrmsg("用户名已注册");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> repetitionMobile() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(705);
        baseRespVo.setErrmsg("手机号已注册");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> unregisteredMobile() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(706);
        baseRespVo.setErrmsg("手机号未注册");
        return baseRespVo;
    }

    public static <T> BaseRespVo<T> noSingleMobile() {
        BaseRespVo<T> baseRespVo = new BaseRespVo<T>();
        baseRespVo.setErrno(502);
        baseRespVo.setErrmsg("系统内部错误，手机号不唯一");
        return baseRespVo;
    }
}
